// pages/menu/menu.js
const app = getApp()

Page({
  data: {
    categories: [],
    dishes: [],
    currentCategoryId: null,
    cartItems: [],
    cartTotal: 0,
    showCart: false
  },

  onLoad(options) {
    // 如果有传入分类ID，则显示该分类的菜品
    if (options.categoryId) {
      this.setData({
        currentCategoryId: parseInt(options.categoryId)
      })
    }
    this.loadCategories()
    this.loadDishes()
  },

  onShow() {
    // 页面显示时刷新购物车
    this.loadCartItems()
  },

  // 加载分类数据
  loadCategories() {
    wx.request({
      url: `${app.globalData.baseUrl}/mini/category/list`,
      method: 'POST',
      header: {
        'content-type': 'application/json'
      },
      success: (res) => {
        if (res.data.code === 1) {
          this.setData({
            categories: res.data.data || []
          })
        }
      },
      fail: (err) => {
        console.error('加载分类失败', err)
        wx.showToast({
          title: '加载分类失败',
          icon: 'none'
        })
      }
    })
  },

  // 加载菜品数据
  loadDishes() {
    wx.request({
      url: `${app.globalData.baseUrl}/mini/dish/list`,
      method: 'POST',
      header: {
        'content-type': 'application/json'
      },
      data: {
        categoryId: this.data.currentCategoryId
      },
      success: (res) => {
        if (res.data.code === 1) {
          this.setData({
            dishes: res.data.data || []
          })
        }
      },
      fail: (err) => {
        console.error('加载菜品失败', err)
        wx.showToast({
          title: '加载菜品失败',
          icon: 'none'
        })
      }
    })
  },

  // 选择分类
  selectCategory(e) {
    const categoryId = e.currentTarget.dataset.id
    this.setData({
      currentCategoryId: categoryId
    })
    this.loadDishes()
  },

  // 添加到购物车
  addToCart(e) {
    const dish = e.currentTarget.dataset.dish
    const cartItems = [...this.data.cartItems]
    
    // 查找是否已存在该商品
    const existIndex = cartItems.findIndex(item => item.dishId === dish.id)
    
    if (existIndex >= 0) {
      // 已存在，数量+1
      cartItems[existIndex].number += 1
    } else {
      // 不存在，添加新商品
      cartItems.push({
        dishId: dish.id,
        name: dish.name,
        price: dish.price,
        image: dish.image,
        number: 1
      })
    }
    
    this.setData({
      cartItems: cartItems
    })
    
    this.calculateCartTotal()
    
    wx.showToast({
      title: '已添加到购物车',
      icon: 'success',
      duration: 1000
    })
  },

  // 从购物车移除
  removeFromCart(e) {
    const dishId = e.currentTarget.dataset.id
    const cartItems = [...this.data.cartItems]
    
    const existIndex = cartItems.findIndex(item => item.dishId === dishId)
    
    if (existIndex >= 0) {
      if (cartItems[existIndex].number > 1) {
        cartItems[existIndex].number -= 1
      } else {
        cartItems.splice(existIndex, 1)
      }
    }
    
    this.setData({
      cartItems: cartItems
    })
    
    this.calculateCartTotal()
  },

  // 计算购物车总价
  calculateCartTotal() {
    let total = 0
    this.data.cartItems.forEach(item => {
      total += item.price * item.number
    })
    
    this.setData({
      cartTotal: total.toFixed(2)
    })
  },

  // 加载购物车数据
  loadCartItems() {
    // 这里可以从本地存储或服务器加载购物车数据
    const cartItems = wx.getStorageSync('cartItems') || []
    this.setData({
      cartItems: cartItems
    })
    this.calculateCartTotal()
  },

  // 保存购物车数据
  saveCartItems() {
    wx.setStorageSync('cartItems', this.data.cartItems)
  },

  // 显示/隐藏购物车
  toggleCart() {
    this.setData({
      showCart: !this.data.showCart
    })
  },

  // 清空购物车
  clearCart() {
    wx.showModal({
      title: '确认清空',
      content: '确定要清空购物车吗？',
      success: (res) => {
        if (res.confirm) {
          this.setData({
            cartItems: [],
            cartTotal: 0
          })
          this.saveCartItems()
        }
      }
    })
  },

  // 去结算
  goToCheckout() {
    if (this.data.cartItems.length === 0) {
      wx.showToast({
        title: '购物车为空',
        icon: 'none'
      })
      return
    }
    
    // 保存购物车数据
    this.saveCartItems()
    
    // 跳转到订单页面
    wx.navigateTo({
      url: '/pages/checkout/checkout'
    })
  },

  onHide() {
    // 页面隐藏时保存购物车数据
    this.saveCartItems()
  },

  onUnload() {
    // 页面卸载时保存购物车数据
    this.saveCartItems()
  }
})